# WEB 2D Game

Простая браузерная 2D игра, написанная на TypeScript с целью знакомства с архитектурами ECS (Entity Component System) и MVC (Model View Controller).

## Цель игры

Управляя `зеленым` самолетом с помощью `WASD` и стреляя с помощью `Space` сбить все оставшиеся самолеты, пока кто-то из них не вышел из поля зрения камеры.

### Управление

Управление возможно только с помощью клавиатуры.

- W - вперед;
- A - влево;
- S - назад;
- D - вправо;
- Space - выстрел.

## Разработка

Для начала разработки необходимо выполнить следующее:

### Предваритеьные условия

Убедитесь, что у вас установлена `NodeJS` версии выше `16`. Версия `NodeJS`, на которой разрабатывалась игра, является `18`.

### Поднятие локального сервера

Выполните следующие команды в папке с файлом `package.json`:

```
npm ci
```

```
npm run start
```

Локальный сервер будет доступен по адресу [http://localhost:4200](http://localhost:4200).

### Файловая структура

- `engine` - содержит фундоментальные классы, включая `ECS Framework` в папке `ecs`;
- `game` - содержит игровую логику, а также демо уровень;
- `ui` - содержит `UI` логику, с применением `MVC`.

### Не стоит воспринимать как решение, готовое к использованию в производстве! В данном проекте есть серьезные проблемы с колизиями.
